Megoldás

Fennálló adatütközések:

  • A 2. utasításnak az R5-be beírt eredményre van szüksége, mielőtt ezt az 1. utasítás előállította volna.
    Megoldás a 2. és a 3. (az előzőektől független) utasítás felcserélése.

  • A 6. utasítás a Z állapotjelző értékét használja az ugrási feltétel kiértékeléséhez, de ezt az 5. utasítás csak az utolsó fázisában állítja b. Az ütközést az ezektől független 4. utasítás közbeiktatásával lehet feloldani.

  • Mivel az utasításszámláló helyes betöltését a 6. utasítás csak az utolsó fázisban végzi el az ugrási feltétel kiértékelésének megfelelően, a soron következő utasítást csak három fázisnak megfelelő időeltolással lehet helyesen lehívni a memóriából. Erre az időre be lehetne iktatni NOP utasításokat is, de célszerűbb ide beszúrni az első három utasítást, amelyeket az elágazási feltétel kimenetétől függetlenül úgyis végre kell hajtani.

  • Összefoglalva, az ütközések nélküli helyes utasítássorrend a következő:

    5. R3 - R4

    4. R7 + 1 ® R7

    6. ugrás ha nulla adr1-re

    1. mem1 ® R1

    3. R6 + 1 ® R6

    2. R5 + R1 ® R2

    vissza